<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script type="text/javascript">
        //JSn内置Date函数的prototype属性
        console.log(Date.prototype);
        console.log(typeof Date.prototype);
        //定义一个函数，并查询其prototype属性
        function Fun()
        {
            console.log("定义一个函数");
        }
        Fun();
        //查询fun的prototype属性，默认指向一个Object空对象（没有我们设置的属性）
        console.log(Fun.prototype);
        console.log(typeof Fun.prototype);
        //给fun.prototype添加方法（属性）
        Fun.prototype.test=function()
        {
            console.log("test");
        };
        //原型函数中就拥有了test()
        Fun.prototype.test();
        //定义一个新函数
        var fun1=new Fun();
        //这样可以直接调用fun1.test()函数
        fun1.test();
        //console.log(fun1);
        console.log(fun1.test);

        //原型对象中有一个属性constructor，它指向函数对象
        console.log(Date.prototype.constructor);
        //判断Date的原型对象的属性constructor指向的对象是否跟Date函数本身一样
        console.log(Date.prototype.constructor === Date);//输出为true，确认是指向Date函数本身
        //查询Fun的原型对象的属性constructor,他指向的就是Fun()函数对象本身
        console.log(Fun.prototype.constructor);
        //判断Fun的原型对象的属性constructor指向的对象是否跟Fun函数本身一样
        console.log(Fun.prototype.constructor === Fun);//输出为true,确认是指向Fun函数本身
        //查询用Fun创建的新函数fun1.test的原型对象的属性constructor，他指向的就是fun1.test函数对象本身
        console.log(fun1.test.prototype.constructor);
        //判断fun1.test原型对象的属性constructor指向的对象是否跟fun1.test本身一样
        console.log(fun1.test.prototype.constructor ===fun1.test);//输出为true
    </script>
</head>
<body>
    <!--
        1.函数的prototype属性
        每个函数都有一个prototype属性，它默认指向一个Object对象（即称为：原型对象）
        原型对象中有一个属性constructor，它指向函数对象
        2.给原型对象添加属性（一般都是方法）
        作用：函数的所有实例对象自动拥有原型中的属性（方法）

        prototype总结：
        object的prototype属性指向object.prototype
        object.prototype的constructor属性指向object
    -->
</body>
</html>